package com.gyl.service.impl;

import java.io.Serializable;
import java.util.Collection;
import java.util.Set;

import com.gyl.dao.BaseDao;
import com.gyl.query.BaseQuery;
import com.gyl.query.PageResult;
import com.gyl.service.BaseService;

/**  
* @Name: BaseServiceImpl<T>
* @Description: 抽象Service实现类，封装基本的CRUD操作
* @Author: 李超
* @Create Date: 2016-11-30
*/
public abstract class BaseServiceImpl<T> implements BaseService<T>{
	
	/**  
	* @Name: getBaseDao（方法的名称）
	* @Description: 获取Dao实例化对象（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters: 无（方法的入参，如果没有，填写为“无”）
	* @Return: BaseDao<T> 返回Dao实例化对象结果（返回值，如果没有，填写为“无”）
	*/
	public abstract BaseDao<T> getBaseDao() ;

	/**  
	* @Name: findPageResult（方法的名称）
	* @Description: 分页查询（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters: BaseQuery baseQuery 查询条件（方法的入参，如果没有，填写为“无”）
	* @Return: PageResult<T> 分页查询结果（返回值，如果没有，填写为“无”）
	*/
	public PageResult<T> findPageResult(BaseQuery baseQuery) {
		return this.getBaseDao().findPageResult(baseQuery) ;
	}

	/**  
	* @Name: findAllEntry（方法的名称）
	* @Description: 查询所有的对象集合，不分页（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters: 无（方法的入参，如果没有，填写为“无”）
	* @Return: Collection<T> 查询结果（返回值，如果没有，填写为“无”）
	*/
	public Collection<T> findAllEntry() {
		return this.getBaseDao().findAllEntry();
	}

	/**  
	* @Name: findEntryById（方法的名称）
	* @Description: 根据id查询对象（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters: Serializable id 主键id（方法的入参，如果没有，填写为“无”）
	* @Return: T 查询结果（返回值，如果没有，填写为“无”）
	*/
	public T findEntryById(Serializable id) {
		return this.getBaseDao().findEntryById(id);
	}

	/**  
	* @Name: getEntriesByIds（方法的名称）
	* @Description: 根据id数组查询对象集合（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters: Serializable ids 主键id数组（方法的入参，如果没有，填写为“无”）
	* @Return: Set<T> 返回对象集合（返回值，如果没有，填写为“无”）
	*/
	public Set<T> findEntriesByIds(Serializable... ids) {
		return this.getBaseDao().findEntriesByIds(ids);
	}

	/**  
	* @Name: getEntryCount（方法的名称）
	* @Description: 获取总记录数（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters: BaseQuery baseQuery 封装页面查询参数（方法的入参，如果没有，填写为“无”）
	* @Return: int 返回总记录数（返回值，如果没有，填写为“无”）
	*/
	public int getEntryCount(BaseQuery baseQuery) {
		return this.getBaseDao().getEntryCount(baseQuery);
	}

	/**  
	* @Name: saveEntry（方法的名称）
	* @Description: 保存对象（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters: T entity 待保存的对象（方法的入参，如果没有，填写为“无”）
	* @Return: 无（返回值，如果没有，填写为“无”）
	*/
	public void saveEntry(T entity) {
		this.getBaseDao().saveEntry(entity) ;
	}

	/**  
	* @Name: saveEntries（方法的名称）
	* @Description: 保存对象集合（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters: Collection<T> entities 待保存的对象集合（方法的入参，如果没有，填写为“无”）
	* @Return: 无（返回值，如果没有，填写为“无”）
	*/
	public void saveEntries(Collection<T> entities) {
		this.getBaseDao().saveEntries(entities) ;
	}

	/**  
	* @Name: updateEntry（方法的名称）
	* @Description: 更新对象（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters:T entity 待更新的对象（方法的入参，如果没有，填写为“无”）
	* @Return: 无（返回值，如果没有，填写为“无”）
	*/
	public void updateEntry(T entity) {
		this.getBaseDao().updateEntry(entity) ;
	}

	/**  
	* @Name: deleteEntry（方法的名称）
	* @Description: 根据id删除对象（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters:Serializable id 主键id（方法的入参，如果没有，填写为“无”）
	* @Return: 无（返回值，如果没有，填写为“无”）
	*/
	public void deleteEntry(Serializable id) {
		this.getBaseDao().deleteEntry(id) ;
	}

	/**  
	* @Name: deleteEntriedByIds（方法的名称）
	* @Description: 根据id数组删除对象集合（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters:Serializable ... ids 主键id数组（方法的入参，如果没有，填写为“无”）
	* @Return: 无（返回值，如果没有，填写为“无”）
	*/
	public void deleteEntriedByIds(Serializable... ids) {
		this.getBaseDao().deleteEntriedByIds(ids) ;
	}

	/**  
	* @Name: deleteEntitiesByCollection（方法的名称）
	* @Description: 删除对象集合（方法的描述）
	* @Author: 李超（作者） 
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-11-30 （创建日期）
	* @Parameters:Collection<T> entities 待删除的对象集合（方法的入参，如果没有，填写为“无”）
	* @Return: 无（返回值，如果没有，填写为“无”）
	*/
	public void deleteEntitiesByCollection(Collection<T> entities) {
		this.getBaseDao().deleteEntitiesByCollection(entities) ;
	}

}
